iT邦幫忙

2025 iThome 鐵人賽

DAY 9
0
自我挑戰組

從0開始學習Java系列 第 9

練習 URL 編碼

  • 分享至 

  • xImage
  •  
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

public class Example2_UrlEncoding {
	public static void main(String[] args) {
		// 包含特殊字元的字串
		String originalString = "hello world!";
		System.out.println("原始字串: " + originalString);

		// 步驟1: 標準的 URL 編碼
		String standardEncoded = urlEncode(originalString);
		System.out.println("標準 URL 編碼後: " + standardEncoded);

		// 步驟2:.NET 風格 URL 編碼
		String netEncoded = netUrlEncode(standardEncoded);
		System.out.println("特規編碼後: " + netEncoded);

		// 觀察重點:
		// 1. 空格變成了 "+"
		// 2. "!" 編碼成 "%21","(" 編碼成 "%28",")" 編碼成 "%29"
		// 3. netUrlEncode 又把 %21, %28, %29 換回了 !, (, ),這是 ECPay 的特殊規定
	}

	/**
	 * 將資料做 urlEncode編碼
	 */
	public static String urlEncode(String data) {
		String result = "";
		try {
			// 使用 UTF-8 編碼
			result = URLEncoder.encode(data, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * 將做完的urlEncode字串做轉換符合 .NET語言的轉換規則
	 */
	private static String netUrlEncode(String url) {
		String netUrlEncode = url.replaceAll("%21", "\\!").replaceAll("%28", "\\(").replaceAll("%29", "\\)");
		return netUrlEncode;
	}
}

參考資料
https://developers.ecpay.com.tw/


上一篇
java.security 練習 Hashing (MD5 加密)
下一篇
Java 的常見集合類別小範例
系列文
從0開始學習Java21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言